প্রিপ্রসেসর ডিরেক্টিভস: #include, #define, #ifdef

Computer Programming - সি++ প্রোগ্রামিং (C++ Programming) নেমস্পেস এবং প্রিপ্রসেসর ডিরেক্টিভস |
254
254

প্রিপ্রসেসর ডিরেক্টিভস (Preprocessor Directives) হলো এমন কিছু নির্দেশনা, যা C++ কম্পাইলারকে কোড কম্পাইল করার আগে প্রিপ্রসেসিং করতে বলে। প্রিপ্রসেসর ডিরেক্টিভস # চিহ্ন দিয়ে শুরু হয় এবং এটি বিভিন্ন কাজ করে, যেমন ফাইল ইনক্লুড করা, ম্যাক্রো ডিফাইন করা, শর্তসাপেক্ষ কম্পাইলিং ইত্যাদি। কিছু সাধারণ প্রিপ্রসেসর ডিরেক্টিভস হলো #include, #define, এবং #ifdef


#include ডিরেক্টিভ

#include ডিরেক্টিভ ব্যবহার করে বাইরের লাইব্রেরি বা হেডার ফাইলকে প্রোগ্রামে যুক্ত করা হয়। এতে C++ এর বিল্ট-ইন লাইব্রেরি বা ইউজার-ডিফাইন্ড হেডার ফাইল অন্তর্ভুক্ত করা যায়।

#include এর ধরন:

Standard Library Files: < > চিহ্নের মধ্যে ফাইল নাম উল্লেখ করে।

#include <iostream> // স্ট্যান্ডার্ড লাইব্রেরি অন্তর্ভুক্ত

User-Defined Files: " " চিহ্নের মধ্যে ফাইল নাম উল্লেখ করে।

#include "myheader.h" // ইউজার-ডিফাইন্ড হেডার ফাইল অন্তর্ভুক্ত

উদাহরণ:

#include <iostream> // iostream লাইব্রেরি ইনক্লুড করা
using namespace std;

int main() {
    cout << "Hello, World!" << endl;
    return 0;
}

বর্ণনা:

  • এখানে #include <iostream> দিয়ে iostream লাইব্রেরি ইনক্লুড করা হয়েছে, যাতে ইনপুট-আউটপুট অপারেশন চালানো যায়।

#define ডিরেক্টিভ

#define ডিরেক্টিভ ব্যবহার করে ম্যাক্রো বা কনস্ট্যান্ট ডিফাইন করা হয়। এটি একটি নির্দিষ্ট নামের সাথে মান যুক্ত করে এবং প্রোগ্রামে সেই নাম ব্যবহার করলে সেটি #define এর মান দ্বারা প্রতিস্থাপিত হয়।

উদাহরণ:

#include <iostream>
#define PI 3.14159 // কনস্ট্যান্ট ডিফাইন করা

using namespace std;

int main() {
    float radius = 5.0;
    float area = PI * radius * radius; // PI এর মান ব্যবহার
    cout << "Area of the circle: " << area << endl;
    return 0;
}

বর্ণনা:

  • এখানে PI নামে একটি কনস্ট্যান্ট ডিফাইন করা হয়েছে, যার মান 3.14159
  • প্রোগ্রামের মধ্যে PI ব্যবহার করলে তা 3.14159 দ্বারা প্রতিস্থাপিত হয়।

ম্যাক্রো ফাংশন:

#define ডিরেক্টিভ দিয়ে ম্যাক্রো ফাংশনও তৈরি করা যায়, যা কোডকে আরও সংক্ষিপ্ত করে।

#include <iostream>
#define SQUARE(x) ((x) * (x)) // ম্যাক্রো ফাংশন ডিফাইন করা

using namespace std;

int main() {
    int num = 5;
    cout << "Square of " << num << " is: " << SQUARE(num) << endl;
    return 0;
}

বর্ণনা:

  • এখানে SQUARE(x) নামে একটি ম্যাক্রো ফাংশন ডিফাইন করা হয়েছে, যা একটি সংখ্যার স্কয়ার নির্ণয় করে।
  • SQUARE(num) ব্যবহার করলে ((num) * (num)) হিসাবে প্রতিস্থাপিত হয়।

#ifdef ডিরেক্টিভ

#ifdef (if defined) ডিরেক্টিভটি শর্তসাপেক্ষ কম্পাইলিংয়ের জন্য ব্যবহৃত হয়। এটি চেক করে যে নির্দিষ্ট ম্যাক্রো বা কনস্ট্যান্ট ডিফাইন করা আছে কিনা। যদি ডিফাইন করা থাকে, তাহলে সেই অংশের কোড কম্পাইল হবে, অন্যথায় সেটি এড়িয়ে যাবে।

#ifdef এর সাধারণ ব্যবহার

#include <iostream>
#define DEBUG // DEBUG ম্যাক্রো ডিফাইন করা

using namespace std;

int main() {
    int x = 10, y = 20;

    #ifdef DEBUG
    cout << "Debugging mode: x = " << x << ", y = " << y << endl;
    #endif

    cout << "Sum: " << x + y << endl;
    return 0;
}

বর্ণনা:

  • এখানে DEBUG ম্যাক্রো ডিফাইন করা হয়েছে।
  • #ifdef DEBUG ডিরেক্টিভ চেক করছে যে DEBUG ম্যাক্রো ডিফাইন করা আছে কিনা। যদি থাকে, তাহলে ডিবাগিং মেসেজ প্রিন্ট হবে।
  • যদি #define DEBUG লাইনটি বাদ দেওয়া হয়, তবে #ifdef DEBUG এর অন্তর্ভুক্ত কোড অংশটি কম্পাইল হবে না।

আউটপুট:

Debugging mode: x = 10, y = 20
Sum: 30

#ifndef এর ব্যবহার

#ifndef (if not defined) ডিরেক্টিভ #ifdef এর বিপরীত কাজ করে। এটি তখন কার্যকর হয় যখন নির্দিষ্ট ম্যাক্রো বা কনস্ট্যান্ট ডিফাইন করা না থাকে।

#include <iostream>
#ifndef PI
#define PI 3.14159 // PI ডিফাইন না থাকলে এটি ডিফাইন হবে
#endif

using namespace std;

int main() {
    cout << "Value of PI: " << PI << endl;
    return 0;
}

বর্ণনা:

  • এখানে PI ডিফাইন করা আছে কিনা চেক করা হচ্ছে। যদি ডিফাইন করা না থাকে, তবে এটি 3.14159 দিয়ে ডিফাইন করা হবে।

আউটপুট:

Value of PI: 3.14159

সংক্ষিপ্তসার

ডিরেক্টিভকাজ
#includeবাইরের লাইব্রেরি বা ফাইল প্রোগ্রামে ইনক্লুড করা
#defineকনস্ট্যান্ট বা ম্যাক্রো ডিফাইন করা
#ifdefনির্দিষ্ট ম্যাক্রো ডিফাইন করা আছে কিনা চেক করা
#ifndefনির্দিষ্ট ম্যাক্রো ডিফাইন করা নেই কিনা চেক করা

প্রিপ্রসেসর ডিরেক্টিভস ব্যবহার করে সুবিধা

  • কোড পুনঃব্যবহারযোগ্যতা বৃদ্ধি: কনস্ট্যান্ট বা ম্যাক্রো ডিফাইন করার মাধ্যমে একই কোড বিভিন্ন জায়গায় ব্যবহার করা যায়।
  • কন্ডিশনাল কম্পাইলিং: নির্দিষ্ট অংশের কোড নির্দিষ্ট শর্তে কম্পাইল করা যায়।
  • মাল্টিপল ইনক্লুশন প্রতিরোধ: #ifndef, #define, এবং #endif ব্যবহার করে হেডার ফাইল একাধিকবার ইনক্লুড হওয়া প্রতিরোধ করা যায়।

C++ এ প্রিপ্রসেসর ডিরেক্টিভস ব্যবহার করে কোডকে আরও কার্যকরী, সংগঠিত, এবং পুনরায় ব্যবহারযোগ্য করা যায়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion